Cleanup zlib, fix gcc errors Change-Id: Ie37d64e9db4d50f2261730ed6ff94865f6f70b1b
diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn index ba16961..06d63ae 100644 --- a/third_party/zlib/BUILD.gn +++ b/third_party/zlib/BUILD.gn
@@ -21,8 +21,7 @@ } } -use_x86_x64_optimizations = - (current_cpu == "x86" || current_cpu == "x64") +use_x86_x64_optimizations = current_cpu == "x86" || current_cpu == "x64" config("zlib_adler32_simd_config") { if (use_x86_x64_optimizations) { @@ -43,7 +42,7 @@ "adler32_simd.h", ] - cflags = [ "-mssse3" ] + cflags = [ "-mssse3" ] } if (use_arm_neon_optimizations) { @@ -58,35 +57,36 @@ public_configs = [ ":zlib_adler32_simd_config" ] } -if (use_arm_neon_optimizations) { +# CRC32 is not properly linked on ARM64. +if (use_arm_neon_optimizations && current_cpu == "arm") { config("zlib_arm_crc32_config") { - defines = [ "CRC32_ARMV8_CRC32" ] - if (is_linux || is_chromeos) { - defines += [ "ARMV8_OS_LINUX" ] - } else if (is_fuchsia) { - defines += [ "ARMV8_OS_FUCHSIA" ] - } else { - assert(false, "Unsupported ARM OS") - } + # Neon is only available on ARM8. + defines = [ "CRC32_ARMV8_CRC32" ] + if (is_linux || is_chromeos) { + defines += [ "ARMV8_OS_LINUX" ] + } else if (is_fuchsia) { + defines += [ "ARMV8_OS_FUCHSIA" ] + } else { + assert(false, "Unsupported ARM OS") + } } source_set("zlib_arm_crc32") { visibility = [ ":*" ] - include_dirs = [ "." ] + include_dirs = [ "." ] - if (!is_clang) { - assert(!use_thin_lto, - "ThinLTO fails mixing different module-level targets") - cflags_c = [ "-march=armv8-a+crc" ] - } + cflags_c = [] + if (!is_clang) { + cflags_c = [ "-march=armv8-a+crc" ] + } - sources = [ - "arm_features.c", - "arm_features.h", - "crc32_simd.c", - "crc32_simd.h", - ] + sources = [ + "arm_features.c", + "arm_features.h", + "crc32_simd.c", + "crc32_simd.h", + ] configs += [ ":zlib_internal_config" ] @@ -125,9 +125,7 @@ ] } - configs += [ - ":zlib_internal_config", - ] + configs += [ ":zlib_internal_config" ] public_configs = [ ":zlib_inflate_chunk_simd_config" ] } @@ -147,10 +145,10 @@ "crc32_simd.h", ] - cflags = [ - "-msse4.2", - "-mpclmul", - ] + cflags = [ + "-msse4.2", + "-mpclmul", + ] } configs += [ ":zlib_internal_config" ] @@ -158,30 +156,6 @@ public_configs = [ ":zlib_crc32_simd_config" ] } -source_set("zlib_x86_simd") { - visibility = [ ":*" ] - - if (use_x86_x64_optimizations) { - sources = [ - "crc_folding.c", - "fill_window_sse.c", - ] - - cflags = [ - "-msse4.2", - "-mpclmul", - ] - } else { - sources = [ - "simd_stub.c", - ] - } - - configs += [ - ":zlib_internal_config", - ] -} - config("zlib_warnings") { cflags = [] if (is_clang && use_x86_x64_optimizations) { @@ -191,6 +165,35 @@ if (is_clang) { cflags += [ "-Wno-unused-variable" ] } + + if (is_gcc) { + cflags += [ "-Wno-parentheses" ] + } +} + +source_set("zlib_x86_simd") { + visibility = [ ":*" ] + + if (use_x86_x64_optimizations) { + sources = [ + "crc_folding.c", + "fill_window_sse.c", + ] + + cflags = [ + "-msse4.2", + "-mpclmul", + ] + } else { + sources = [ + "simd_stub.c", + ] + } + + configs += [ + ":zlib_internal_config", + ":zlib_warnings", + ] } static_library("zlib") { @@ -240,7 +243,7 @@ if (use_x86_x64_optimizations) { sources += [ "x86.c" ] deps += [ ":zlib_crc32_simd" ] - } else if (use_arm_neon_optimizations) { + } else if (current_cpu == "arm" && use_arm_neon_optimizations) { sources += [ "contrib/optimizations/slide_hash_neon.h" ] deps += [ ":zlib_arm_crc32" ] } @@ -266,6 +269,10 @@ # zlib uses `if ((a == b))` for some reason. cflags = [ "-Wno-parentheses-equality" ] } + + if (is_gcc) { + cflags = [ "-Wno-misleading-indentation" ] + } } static_library("minizip") { @@ -288,9 +295,7 @@ ":zlib", ] - configs += [ - ":minizip_warnings", - ] + configs += [ ":minizip_warnings" ] # Need access to "third_party/zlib/foo.h" include_dirs = [ "../../" ]